package lc20240624;

/**
  * @description
  * @author 不知名帅哥
  * @date 2024/6/24 23:45
  * @version 1.0
*/
public class OnlyAppearTwiceNumII {
    //逐位计算，每一位只有三种状态，依次处理，主要是两个算式比较难理解。输入0，状态不变，输入1，到下一个状态。
    public static int singleNumber(int[] nums) {
        int ones=0;
        int twos=0;
        for (int num : nums) {
            ones=ones^num&~twos;
            twos=twos^num&~ones;
        }
        return ones;
    }

    public static void main(String[] args) {
        int[] nums={3,3,2,3};
        int a=0;
        System.out.println(~a);
        System.out.println(singleNumber(nums));
    }
}
